/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CapaDatos;

import java.sql.ResultSet;
import java.util.LinkedList;

/**
 *
 * @author luisfernando
 */
public class Visita_DAO implements DAO {

    private String queryBD;
    ConexionDB conexion;
    LinkedList<Visita_POJO> listaDetalle = new LinkedList<Visita_POJO>();
    ResultSet resultado;

    public Visita_DAO() {
        this.conexion = new ConexionDB();
    }

    @Override
    public LinkedList<Visita_POJO> obtenerReg(int Id) {


        queryBD = "SELECT * FROM Visita WHERE idVisita = " + Id;
        System.out.println("Obtener " + queryBD);
        try {

            conexion.abrirConexion();
            resultado = conexion.getResultSet(queryBD);

            if (resultado.next()) {

                Visita_POJO visita = new Visita_POJO();

                visita.setFecha(resultado.getString("Fecha"));
                visita.setIdArticulo(Integer.parseInt(resultado.getString("IdArticulo")));
                visita.setIdUsuario(Integer.parseInt(resultado.getString("IdUsuario")));
                visita.setIdVisita(Integer.parseInt(resultado.getString("IdVisita")));



                listaDetalle.add(visita);



            }
            conexion.cerrarConexion();

        } catch (Exception ex) {

            System.out.println("Error " + ex);

        }
        return listaDetalle;
    }

    public int guardarReg(String fecha, int idArticulo, int idUsuario) {


        queryBD = "INSERT INTO Visita (  fecha,idArticulo,idUsuario  ) VALUES "
                + "( '" + fecha + "', " + idArticulo + ", " + idUsuario + " )";

        System.out.println("Guardar " + queryBD);
        try {

            conexion.abrirConexion();
            int resultadoC = conexion.executeQuery(queryBD);
            conexion.cerrarConexion();
            return resultadoC;



        } catch (Exception ex) {

            System.out.println("error " + ex);
            return -1;

        }


    }

    public int actualizarReg(int idVisita, String fecha, int idArticulo, int idUsuario) {


        queryBD = "UPDATE Visita SET fecha = '" + fecha + "', idArticulo = " + idArticulo + ", idUsuario = " + idUsuario
                + " WHERE idVisita = " + idVisita;

        System.out.println("Update " + queryBD);

        try {
            conexion.abrirConexion();
            int resultadoC = conexion.executeQuery(queryBD);
            conexion.cerrarConexion();
            return resultadoC;

            //System.out.println ("Update exitoso");

        } catch (Exception ex) {
            System.out.println("Error " + ex);
            return -1;
        }
    }

    @Override
    public int eliminarReg(int id) {

        queryBD = "DELETE FROM Visita WHERE idVisita = " + id;
        System.out.println("Delte " + queryBD);
        try {

            conexion.abrirConexion();
            int resultadC = conexion.executeQuery(queryBD);
            conexion.cerrarConexion();
            return resultadC;


        } catch (Exception ex) {
            System.out.println("Error " + ex);
            return -1;
        }

    }

    public ResultSet ReporteProductoMasVisitadoPorCliente() {

        /*
         * Se obtiene el producto mas visitado por el cliente (se especifica el cliente)         
         */
        queryBD = "SELECT articulo.nombre AS PRODUCTO, USUARIO.NOMBRE AS USUARIO , COUNT(*) AS VISITAS "
                + "FROM VISITA JOIN ARTICULO ON VISITA.idArticulo = ARTICULO.idArticulo JOIN USUARIO ON USUARIO.idUsuario= VISITA.idUsuario "
                + " group by ARTICULO.nombre, usuario.nombre order by VISITAS DESC;";

        String RETRONO = null;

        try {
            conexion.abrirConexion();

            resultado = conexion.getResultSet(queryBD);

          

            conexion.cerrarConexion();


        } catch (Exception e) {
        }

        System.out.println("PRODUCTO USUARIO " + queryBD);


        return resultado;



    }

    public String ReporteProductoMasVisitado() {

        /*
         * Se obtiene el producto mas visitado          
         */
        queryBD = "SELECT articulo.nombre AS PRODUCTO , COUNT(*) AS VISITAS "
                + "FROM VISITA JOIN ARTICULO ON VISITA.idArticulo = ARTICULO.idArticulo "
                + "group by ARTICULO.nombre order by VISITAS DESC limit 1;";

        String RETRONO = null;

        try {
            conexion.abrirConexion();

            resultado = conexion.getResultSet(queryBD);

            if (resultado.next()) {

                RETRONO = resultado.getString("PRODUCTO");
            }

            conexion.cerrarConexion();


        } catch (Exception e) {
        }

        System.out.println("Delte " + queryBD);


        return RETRONO;



    }
}
